// import NIMSDK from 'nim-web-sdk-ng/dist/NIM_UNIAPP_SDK'
import Observe from './observe.js'

export default class IM {
	
	constructor() {
	    this.nim = null
		this.observe = new Observe()
	}
	
	/**
	 * 初始化im
	 * @param {Object} option
	 * appkey
	 * account
	 * token
	 */
	async init(option){
		this.nim = NIMSDK.getInstance({
		  appkey: option.appkey,
		  account: option.account,
		  token: option.token,
		  debugLevel: 'debug'
		});
		
		this._observeMsg()
		
		await this.nim.connect()
	}
	
	bind(event, subscriber){
		this.observe.bind(event, subscriber)
	}
	
	unbind(event, subscriber){
		this.observe.unbind(event, subscriber)
	}
	
	_observeMsg(){
		this.nim.on('msg', (e)=>{
			this.observe.emit('msg', e)
		})
	}

}

// const eventList = [
//   'logined',
  
//   'multiPortLogin',

//   'kicked',

//   'willReconnect',

//   'disconnect',

//   'msg',

//   'syncdone',

//   'proxyMsg', 'syncRoamingMsgs', 'syncOfflineMsgs',
//   'syncMyNameCard', 'syncdone', 'sessions', 'updateMyNameCard', 'updateBlackList', 'updateMuteList',
//   'sysMsg', 'syncSysMsgs', 'syncFriend', 'friends', 'users', 'updateSystemMessages', 'sysMsgUnread', 'pushEvents',
//   'teamMsgReceipts', 'updateSession',
  
//   'teams',
//   'createTeam',
//   'updateTeamMember',
//   'updateTeam', 'addTeamMembers', 'updateTeamManagers', 'transferTeam', 'removeTeamMembers', 'dismissTeam', 'updateTeamMembersMute',
// ]

// eventList.forEach((key: any) => {
//   nim.on(key, (res) => {
//     console.log(`Receive ${key} event：`, res ? JSON.parse(JSON.stringify(res)) : res);
//   });
// })

// // then，receive event 'logined'
// await nim.connect();